草庐IT

C++ 运算符 [] 魔法

全部标签

c++ - 关于我在 C++ 代码中从未见过的特殊运算符的一些问题

我已经下载了PhoenixSDKJune2008(Toolsforcompilers),当我阅读Hello示例的代码时,我真的很迷茫。publicrefclassHello{//--------------------------------------------------------------------------////Description:////ClassVariables.////Remarks:////Anormalcompilerwouldhavemoreflexiblemeansforholding//ontoallthisinformation,butino

C++删除运算符混淆

这个问题在这里已经有了答案:关闭12年前。PossibleDuplicate:(POD)freeingmemory:isdelete[]equaltodelete?char*pChar=newchar[10];deletepChar;//thisshouldnotworkbutithassameeffectas//delete[],WHY?//Iknowthisisillegal,butwhydoesitwork?

c++ - switch 语句和递增运算符

我写了下面的代码:inti=0;switch(i++){case0:cout代码的输出是这样的:011谁能解释一下输出的第一行?为什么0和1都被打印出来了? 最佳答案 首先,表达式i++(后递增运算符)的计算结果为0(即使它将i的值设置为1)。所以里面switch,case0:分支被选中。那么,因为没有break在你的case0:之后,程序继续执行case1:中的代码标签。总而言之,您有:第一个switch中的0个分支,1来自第二个分支,另外1因为那是i的最终值. 关于c++-switc

java - 如何在 Java 中使用 & 运算符?移植C代码

所以我在C中得到了这个简单的代码。if(flags&4)现在,当我将线路移植到java时:if((flags&4)==1)它不会触发。将C代码移植到Java的正确方法是什么?我对&运算符做错了什么? 最佳答案 它应该是!=0而不是==1:if((flags&4)!=0)原因是在C中,任何非零的东西都被认为是if语句中的true,而Java强制您使用boolean值。在这种情况下,表达式的计算结果可以为4或0,因此将它与1进行比较始终为假。 关于java-如何在Java中使用&运算符?移植

c++ - 对于派生类对象的基类部分,如何在基类中实现运算符重载?

对于派生类对象的基类部分,如何在基类中实现运算符重载?请查看此示例代码并实现基类部分以在派生类对象上实现*运算符classbase{intx;public:};classder:publicbase{inty;public:constderoperator*(constder&rh){derd;d.y=y*rh.y;returnd;}}; 最佳答案 classbase{intx;public:base&operator*=(constbase&rh){x*=rh.x;return*this;}baseoperator*(constb

c++ - 与运算符重载不匹配运算符+错误

我正在学习gameinsitute的C++编程类(class),其中有一个运算符重载的示例,我不断得到一个main.cpp|20|error:nomatchfor‘operator+’in‘v+w’我不知道问题出在哪里。主要.cpp//main.cpp#include"Vector3.h"#includeusingnamespacestd;intmain(){floatcoords[3]={1.0f,2.0f,3.0f};Vector3u;Vector3v(coords);Vector3w(-5.0f,2.0f,0.0f);coutVector3.h#ifndefVECTOR3_H#d

c++ - 浮点运算性能 C++

这个问题在这里已经有了答案:关闭9年前。PossibleDuplicate:Floatingpointdivisionvsfloatingpointmultiplication最近,我写了一个程序来计算我的电脑需要多长时间计算实数乘法、除法和加法。为此,我使用了函数QueryPerformanceFrequency和QueryPerformanceCounter以获得时间间隔。我已经使用6,000,000次迭代测试了我的程序:6000000次乘法、除法和求和(使用浮点变量),并得到以下结果:O.S=WindowsVista(TM)HomePremium,32-bit(ServicePa

c++ - 在存在新的初始化序列的情况下,运算符重载决议如何工作?

给定以下代码:#include#includetemplateclassConvertProxy{Sourceconst*m_source;public:ConvertProxy(Sourceconst&source):m_source(&source){}templateoperatorDest()const{returnDest(m_source->begin(),m_source->end());}};templateConvertProxyconvert(Sourceconst&source){returnConvertProxy(source);}intmain(){std:

c++ - 保留基本功能的重载赋值运算符

是否可以在不完全重新实现的情况下重载=运算符?我想为它指定特殊的行为-如果输入对象有一些特殊的值->运算符应该做一些额外的工作。如果不是-它应该作为基本赋值运算符。有点像operator=(input)if(input==specialValue)setParam(this->true)base() 最佳答案 您可以使用ifelse语句来实现,在else部分指定基本功能,在if或elseif部分指定您的条件,如果条件为真,则根据该值执行您的操作返回一些特定值。operator=(input)if(input==specialValu

c++ - sizeof 运算符是否会导致模板参数推导发生?

我知道sizeof运算符不会评估其表达式参数来获得答案。但它不是模板的非扣除上下文之一。所以我想知道它如何与模板交互,特别是模板参数推导。例如,以下内容摘自C++模板:完整指南:templateclassIsClassT{private:typedefcharOne;typedefstruct{chara[2];}Two;templatestaticOnetest(intC::*);templatestaticTwotest(...);public:enum{Yes=sizeof(IsClassT::test(0))==1};enum{No=!Yes};};这个类型函数决定了,正如它的